package com.yuandian.customer.perception.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.customer_perception.po.IndexParamsPo;
import com.yuandian.api.customer_perception.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 说明：首页mapper接口
 * @Author yanjun
 * @Date 2021/3/8 13:23
 */
@Mapper
public interface IndexMapper {

    /**
     * 查询系统类型统计量topN
     * @param params 首页请求对象
     * @return 首页项vo对象集合
     */
    List<IndexItemVo> querySystemTypeTopNItem(@Param("params") IndexParamsPo params);

    /**
     * 查询历史系统类型统计量
     * @param params 首页请求对象
     * @return 首页项vo对象集合
     */
    IndexItemVo queryHisSystemTypeItem(@Param("params") IndexParamsPo params);

    /**
     * 查询历史业务统计量
     * @param params 首页请求对象
     * @return 首页项vo对象集合
     */
    IndexItemVo queryHisBusiItem(@Param("params") IndexParamsPo params);

    /**
     * 首页项查询(总业务)(一条数据，如果查询出多条数据会报错)
     * @param params 首页请求对象
     * @return 首页项vo对象
     */
    IndexItemVo queryBusiAllItem(@Param("params") IndexParamsPo params);

    /**
     * 查询业务总数量topN
     * @param params 首页请求对象
     * @return 首页项vo对象
     */
    List<IndexItemVo> queryBusiTotalCountTopN(@Param("params") IndexParamsPo params);

    /**
     * 查询业务总数量
     * @param params 首页请求对象
     * @return 首页项vo对象
     */
    IndexItemVo queryBusiTotalCount(@Param("params") IndexParamsPo params);

    /**
     * 首页项查询(服务用户数)(一条数据，如果查询出多条数据会报错)
     * @param params 首页请求对象
     * @return 首页项vo对象
     */
    IndexItemVo queryUserCountItem(@Param("params") IndexParamsPo params);

    /**
     * 查询服务用户总数
     * @param params 首页请求对象
     * @return 首页项vo对象
     */
    IndexItemVo queryUserTotalCount(@Param("params") IndexParamsPo params);

    /**
     * 根据系统类型查询首页项趋势
     * @param params 首页请求对象
     * @return 首页项趋势vo对象集合
     */
    List<IndexItemTrendVo> queryItemTrendBySystemType(@Param("params") IndexParamsPo params);

    /**
     * 查询首页项趋势
     * @param params 首页请求对象
     * @return 首页项趋势vo对象集合
     */
    List<IndexItemTrendVo> queryItemTrend(@Param("params") IndexParamsPo params);

    /**
     * 查询地图区域业务量列表
     * @param params 首页请求对象
     * @return 地图区域业务量vo对象集合
     */
    List<AreaBusiVo> queryAreaBusiList(@Param("params") IndexParamsPo params);

    /**
     * 查询地图区域业务量列表
     * @param params 首页请求对象
     * @return 地图区域业务量vo对象集合
     */
    List<CityBusiVo> queryAreaList(@Param("params") IndexParamsPo params);

    /**
     * 查询各营业厅的受理量
     * @param params 首页请求对象
     * @return 地图区域业务量vo对象集合
     */
    List<HallBusiVo> queryHallBusiList(@Param("params") IndexParamsPo params);


    /**
     * 查询营业员活跃趋势
     * @param params 首页请求对象
     * @return 营业员活跃趋势vo对象集合
     */
    List<OperatorOnlineTrendVo> queryOperatorOnlineTrend(@Param("params") IndexParamsPo params);

    /**
     * 查询营业员跨天活跃趋势
     * @param params 首页请求对象
     * @return 营业员活跃趋势vo对象集合
     */
    List<OperatorOnlineTrendVo> queryOperatorOnlineTrendCrossDay(@Param("params") IndexParamsPo params);

    /**
     * 查询业务告警类型
     * @param params 首页请求对象
     * @return 业务告警类型vo对象集合
     */
    List<BusiAlarmTypeVo> queryBusiAlarmType(@Param("params") IndexParamsPo params);

    /**
     * 查询告警业务TopN
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    List<BusiAlarmTopNVo> queryBusiAlarmTopN(Page<BusiAlarmTopNVo> page, @Param("params") IndexParamsPo params);

    /**
     * 查询所有的告警，按照alarmCount降序排序
     * @param params 首页请求对象
     * @return 通用返回对象
     */
    List<BusiAlarmTopNVo> queryBusiAlarmList(@Param("params") IndexParamsPo params);

	/**
	 * 统计告警数
	 * @param params	 首页请求对象
	 */
    long queryBusiAlarmStatisCount(@Param("params") IndexParamsPo params);
}
